package si.yun.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import si.yun.entity.*;
import si.yun.service.TeacherSerivce;
import si.yun.utils.JsonData;
import si.yun.utils.WordFilter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @ClassName TeaSettingWeb
 * @Author SXM
 * @Date 2021/07/29 14:31
 * @Version 1.0
 */
@RestController
@RequestMapping("/tea")
@PropertySource({"config.properties"})
public class TeacherWeb {
    @Autowired
    private TeacherSerivce service;

    /*图片上传路径*/
    @Value("${importcourseImgpath}")
    private String path2;

    /*图片路径*/
    @Value("${courseImgpath}")
    private String path;


    /*
     * @Author SXM
     * @Description //查询获取课程分类
     * @return si.yun.utils.JsonData
     * @Date 2021/8/2  15:48
     **/
    @GetMapping("/selCourseClass")
    public JsonData selCourseClass(){
        List<ztreeNode> tree=new ArrayList<>();
        ztreeNode node=new ztreeNode();
        node.setMenuName("选择分类类型");
        node.setNodeid(0);
        List<ztreeNode> list=service.selCourseClass();
        node.setChildren(list);
        tree.add(node);
        return tree!=null?JsonData.buildSuccess(tree):JsonData.buildError("服务器错误");
    }

    /*
     * @Author SXM
     * @Description //表格上方按钮中的总和数
     * @return si.yun.utils.JsonData
     * @Date 2021/8/4  19:57
     **/
    @PostMapping("/selCourseSum")
    public JsonData selCourseSum(Integer uId){
        Map<String,Object> map=service.selCourseSum(uId);
        return map!=null?JsonData.buildSuccess(map):JsonData.buildError("服务器错误");
    }

    /*
     * @Author SXM
     * @Description //查询个人课程表
     * @return si.yun.utils.JsonData
     * @Date 2021/8/4  8:28
     **/
    @PostMapping("/selcourseTab")
    public JsonData selcourseTab(@RequestBody CourseTab tab){
        List<SyCourseTab> list=service.selcourseTab(tab);
        if(list!=null) {
            for(SyCourseTab tab1:list) {
                tab1.setUrl(path+tab1.getUrl());
            }
            return JsonData.buildSuccess(list);
        }else {
            return JsonData.buildError("服务器错误");
        }
    }

    /*
     * @Author SXM
     * @Description //更改个人课程的上下架状态
     * @return si.yun.utils.JsonData
     * @Date 2021/8/5  11:17
     **/
    @PostMapping("/updCourseStatus")
    public JsonData updCourseStatus(int courseId, int status){
        //System.out.println("ID:"+courseId+"状态："+cstatus);
        int num=service.updCourseStatus(courseId,status);
        return num>0?JsonData.buildSuccess(num):JsonData.buildError("更改失败");
    }

    /*
     * @Author SXM
     * @Description //查询课程审核详情
     * @return si.yun.utils.JsonData
     * @Date 2021/8/7  16:48
     **/
    @PostMapping("/selcourseRecord")
    public JsonData selcourseRecord(Integer id){
        List<SyCourseRecordTab> syCourseRecordTabs = service.selcourseRecord(id);
        return syCourseRecordTabs!=null?JsonData.buildSuccess(syCourseRecordTabs):JsonData.buildError("服务器错误");
    }

    /*
     * @Author SXM
     * @Description //查询单个课程详情
     * @return si.yun.utils.JsonData
     * @Date 2021/8/10  9:25
     **/
    @PostMapping("/selcourse")
    public JsonData selcourse(Integer courseId){
        SyCourseTab course = service.selcourse(courseId);
        course.setUrl(path+course.getUrl());
        return course!=null?JsonData.buildSuccess(course):JsonData.buildError("服务器错误");
    }

    /*
     * @Author SXM
     * @Description //修改课程详情
     * @return si.yun.utils.JsonData
     * @Date 2021/8/12  20:36
     **/
    @PostMapping("/updCourseEdit")/*SyCourseTab course,有类型转换问题，就没用它*/
    public JsonData updCourseEdit(CourseTab tab){
        int num=service.updCourseEdit(tab);
        return num>0?JsonData.buildSuccess(num):JsonData.buildError("修改失败");
    }

    /*
     * @Author SXM
     * @Description //查询分类全名称
     * @return si.yun.utils.JsonData
     * @Date 2021/8/12  21:25
     **/
    @PostMapping("/selcourseClassName")    //之前重名了
    public JsonData selcourseClassName(Integer classId){
        String className=service.selcourseClassName(classId);
        return className!=null?JsonData.buildSuccess(className):JsonData.buildError("服务器错误");
    }

    /*
     * @Author SXM
     * @Description //查询课程的日志
     * @return si.yun.utils.JsonData
     * @Date 2021/8/13  20:36
     **/
    @PostMapping("/selJournal")
    public JsonData selJournal(Integer id){
        List<SyCourseTab> tab=service.selJournal(id);
        return tab!=null?JsonData.buildSuccess(tab):JsonData.buildError("服务器错误");
    }

    /*
     * @Author SXM
     * @Description //删除课程
     * @return si.yun.utils.JsonData
     * @Date 2021/8/13  21:33
     **/
    @PostMapping("/delCourse")
    public JsonData delCourse(Integer id){
        int num=service.delCourse(id);
        return num>0?JsonData.buildSuccess(true):JsonData.buildError("删除失败");
    }

    /*
     * @Author SXM
     * @Description //添加课程
     * @return si.yun.utils.JsonData
     * @Date 2021/8/14  21:02
     **/
    @PostMapping("/addCourse")
    public JsonData addCourse(SyCourseTab courseTab,HttpServletRequest hsrq){
        SyUser user=(SyUser) hsrq.getSession().getAttribute("user");
        Integer uId = user.getUserId();
        int num=service.addCourse(courseTab,uId);
        return num>0?JsonData.buildSuccess(num):JsonData.buildError("添加失败");
    }

    /*
     * @Author SXM
     * @Description //文件上传的工具类
     * @return java.lang.String
     * @Date 2021/8/27  10:28
     **/
    @PostMapping("/addFile")
    public String addFile(MultipartFile file,String path1) throws IOException {
        //判断是否存在该文件夹
        File file1=new File(path1);
        if(file1.isDirectory()) {
            file1.mkdirs();
        }
        //重命名文件
        long currTime=System.currentTimeMillis();
        String fileName=file.getOriginalFilename();
        String filesub=fileName.substring(fileName.lastIndexOf("."));
        String newName=fileName.substring(0,fileName.lastIndexOf("."))+"_"+currTime+filesub;
        //拼接最终路径
        String route=path1+newName;
        //上传
        file.transferTo(new File(route));
        return newName;
    }
    
    /*
     * @Author SXM
     * @Description //个人课程上传图片_上传
     * @return si.yun.utils.JsonData
     * @Date 2021/8/15  8:57
     **/
    @PostMapping("/addCourseImg")
    public JsonData addCourseImg(HttpServletResponse response, HttpSession session, MultipartFile file) throws IOException {
        String newName=addFile(file,path2);//调用工具类
        return newName!=null?JsonData.buildSuccess(newName):JsonData.buildError("服务器错误");
    }

    /*课程视频路径*/
    @Value("${coursevideopath}")
    private String cvpath;

    /*课程视频上传路径*/
    @Value("${importcoursevideopath}")
    private String cvpath2;

    /*
     * @Author SXM
     * @Description //添加课程_上传视频
     * @return si.yun.utils.JsonData
     * @Date 2021/9/10  8:36
     **/
    @PostMapping("/addCourseVideo")
    public JsonData addCourseVideo(HttpServletResponse response, HttpSession session, MultipartFile file) throws IOException {
        String newName=addFile(file,cvpath2);//调用工具类
        return newName!=null?JsonData.buildSuccess(cvpath+newName):JsonData.buildError("服务器错误");
    }



    /*
     * @Author SXM
     * @Description //查询微圈表格数据
     * @return si.yun.utils.JsonData
     * @Date 2021/8/17  14:21
     **/
    @PostMapping("/selForumTab")
    public JsonData selForumTab(@RequestBody ForumTab tab){
        List<SyForumTab> list = service.selForumTab(tab);
        return list!=null?JsonData.buildSuccess(list):JsonData.buildError("服务器错误");
    }

    /*
     * @Author SXM
     * @Description //添加微圈文章
     * @return si.yun.utils.JsonData
     * @Date 2021/8/21  9:05
     **/
    @PostMapping("/addMicroCircle")//
    public JsonData addMicroCircle(@RequestBody ForumTab tab){
        int num=service.addMicroCircle(tab);
        return num>0?JsonData.buildSuccess(tab.getMicrocircleId()):JsonData.buildError("服务器错误");
    }

    /*
     * @Author SXM
     * @Description //修改微圈文章
     * @return si.yun.utils.JsonData
     * @Date 2021/8/21  9:42
     **/
    @PostMapping("/updMicroCircle")
    public JsonData updMicroCircle(@RequestBody ForumTab tab){
        int num=service.updMicroCircle(tab);
        return num>0?JsonData.buildSuccess(num):JsonData.buildError("服务器错误");
    }

    /*
     * @Author SXM
     * @Description //删除微圈文章
     * @return si.yun.utils.JsonData
     * @Date 2021/8/21  10:57
     **/
    @PostMapping("/delMicroCircle")
    public JsonData delMicroCircle(Integer id){
        int num=service.delMicroCircle(id);
        return  num>0?JsonData.buildSuccess(num):JsonData.buildError("服务器错误");
    }

    /*
     * @Author SXM
     * @Description //查看微圈
     * @return si.yun.utils.JsonData
     * @Date 2021/8/21  14:39
     **/
    @PostMapping("/selMicroCircle")
    public JsonData selMicroCircle(Integer id){
        SyForumTab tab = service.selMicroCircle(id);
        return tab!=null?JsonData.buildSuccess(tab):JsonData.buildError("服务器错误");
    }

    /*
     * @Author SXM
     * @Description //微圈管理--发送评论
     * @return si.yun.utils.JsonData
     * @Date 2021/8/25  10:10
     **/
    @PostMapping("/addComment")
    public JsonData addComment(@RequestBody ForumTab tab){
        String conts= WordFilter.replaceWords(tab.getCont());
        int num =service.addComment(tab);
        return num>0?JsonData.buildSuccess(num):JsonData.buildError("服务器错误");
    }

    /*
     * @Author SXM
     * @Description //微圈管理--查询评论区数据
     * @return si.yun.utils.JsonData
     * @Date 2021/8/27  10:45
     **/
    @PostMapping("/selComment")
    public JsonData selComment(Integer id,int limi){
        List<SyCommentList> list=service.selComment(id,limi);
        return list!=null?JsonData.buildSuccess(list):JsonData.buildError("服务器错误");
    }

    /*
     * @Author SXM
     * @Description //公共课程\微圈管理_添加分类节点
     * @return si.yun.utils.JsonData
     * @Date 2021/9/2  20:11
     **/
    @PostMapping("/addClassTree")
    public JsonData addClassTree(Integer parentId,String name,Integer uId){
        int num=service.addClassTree(parentId,name,uId);
        return num>0?JsonData.buildSuccess(num):JsonData.buildError("服务器错误");
    }

    /*
     * @Author SXM
     * @Description //公共课程\微圈管理_修改分类节点
     * @return si.yun.utils.JsonData
     * @Date 2021/9/3  15:25
     **/
    @PostMapping("/updClassTree")
    public JsonData updClassTree(Integer id,String name,Integer uId){
        int num=service.updClassTree(id,name,uId);
        return num>0?JsonData.buildSuccess(num):JsonData.buildError("服务器错误");
    }
    /*
     * @Author SXM
     * @Description //公共课程\微圈管理_删除分类节点
     * @return si.yun.utils.JsonData
     * @Date 2021/9/3  17:00
     **/
    @PostMapping("/delClassTree")
    public JsonData delClassTree(Integer id){
        int num=service.delClassTree(id);
        return num>0?JsonData.buildSuccess(num):JsonData.buildError("服务器错误");
    }

    /*
     * @Author SXM
     * @Description //微圈管理_隐藏评论
     * @return si.yun.utils.JsonData
     * @Date 2021/9/6  19:10
     **/
    @PostMapping("/updComment")
    public JsonData updComment(Integer id,Integer uId){
        int num=service.updComment(id,uId);
        return num>0?JsonData.buildSuccess(num):JsonData.buildError("服务器错误");
    }

    /*
     * @Author SXM
     * @Description //微圈管理_删除评论
     * @return
     * @Date 2021/9/6  19:46
     **/
    @PostMapping("/delComment")
    public JsonData delComment(Integer id){
        int num=service.delComment(id);
        return num>0?JsonData.buildSuccess(num):JsonData.buildError("服务器错误");
    }
}
